#include "stm32wig.h"
#include "ui_stm32wig.h"
#include "globalval.h"

Stm32Wig::Stm32Wig(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Stm32Wig)
{
    ui->setupUi(this);

    mqttHandler = new MqttHandler(this);
    connect(ui->pushButton, &QPushButton::clicked, this, &Stm32Wig::onPushButtonClicked);
}

Stm32Wig::~Stm32Wig()
{
    delete ui;
}
//显示温湿度数据
void Stm32Wig::onDataUp(const QByteArray &data)
{
    QJsonDocument doc = QJsonDocument::fromJson(data);
    qDebug() << "Received data:" << QString(data);

    if(!doc.isNull() && doc.isObject())
    {
        QJsonObject rootObj = doc.object();
        QJsonObject paraObj = rootObj.value("para").toObject(); // 访问嵌套的'para'对象

        QJsonValue tempValue = paraObj.value("temp");
        QJsonValue humiValue = paraObj.value("humi");

        // 验证温度和湿度值是否为预期的数字格式
        if(tempValue.isString() && humiValue.isString())
        {
            double temperature = tempValue.toString().toDouble();
            double humidity = humiValue.toString().toDouble();

            // 显示温度和湿度值
            qDebug() << "Temperature:" << temperature << "Humidity:" << humidity;
            ui->lcd_temp->display(temperature);
            ui->lcd_humi->display(humidity);
        }
        else
        {
            // 如果温度或湿度不是字符串或无法转换为数字，显示错误信息
            qDebug() << "Invalid format for temperature or humidity.";
            ui->lcd_temp->display("Err");
            ui->lcd_humi->display("Err");
        }
    }
    else
    {
        qDebug() << "Received data is not a valid JSON document.";
        ui->lcd_temp->display("Err");
        ui->lcd_humi->display("Err");
    }
}
//发送点灯数据包
void Stm32Wig::onPushButtonClicked()
{
    static bool isOpen = false;
    // 切换按钮的文本和状态
    isOpen = !isOpen; // 切换 isOpen 的状态
    ui->pushButton->setText(isOpen ? "Close" : "Open"); // 根据 isOpen 的状态设置按钮文本

    // 构造 MQTT 消息（如果需要的话）
    QString messageText = isOpen ? "LED_ON": "LED_OFF";
    qDebug() << "Message is ok:" << messageText; // 调试输出消息内容

    // 构造 JSON 对象（如果需要的话）
    QJsonObject jsonObject;
    jsonObject["led_status"] = messageText;
    // 将 JSON 对象转换为 JSON 文档，再转换为 QByteArray
    QJsonDocument jsonDoc(jsonObject);
    QByteArray payload = jsonDoc.toJson();

    // 构造 MQTT 消息并发布（如果需要的话）
    QMQTT::Message mqttMessage(0, "topic", payload);
    GlobalVal::mqtt->publish(mqttMessage);
}
